1. Field of Invention
The field of invention relates generally to computer systems and, more specifically but not exclusively, relates to pushing capabilities into firmware by an operating system of a computer system.
2. Background Information
In a typical PC architecture, the initialization and configuration of the computer system by the Basic Input/Output System (BIOS) is commonly referred to as the pre-boot phase. The pre-boot phase is generally defined as the firmware that runs between the processor reset and the first instruction of the Operating System (OS) loader. At the start of a pre-boot, it is up to the code in the firmware to initialize the system to the point that an operating system loaded off of media, such as a hard disk, can take over. The start of the OS load begins the period commonly referred to as OS runtime. During OS runtime, the firmware acts as an interface between software and hardware components of a computer system. As computer systems have become more sophisticated, the operational environment between the application and OS levels and the hardware level is generally referred to as the firmware or the firmware environment.
Hardware devices, such as expansion boards, often come with a pre-boot driver stored on the device in a non-volatile storage. For example, a video card may be shipped with EFI (Extensible Firmware Interface) Byte Code stored in a flash memory device on the video card. The computer system is able to read the pre-boot driver during the pre-boot phase and execute the driver. A pre-boot driver provides functionality to a hardware device during the pre-boot phase.
However, there are limitations on the amount of non-volatile memory a hardware device may have on-board. Thus, the level of functionality from pre-boot driver may be limited. Also, updating a pre-boot driver for a hardware device may require re-flashing or replacing the non-volatile storage. Such procedures can be burdensome for a user. Further, a hardware device may be installed in a computer system where the device was shipped without pre-boot drivers. Currently, a user has no way to add pre-boot functionality through pre-boot drivers to such a device.